#include "Date.h"

//测试构造函数
void test_1() {
	Date d1; //调用全缺省的构造函数
	d1.PrintDate();

	Date d2(2023, 2, 5); //合法的初始化
	d2.PrintDate();

	//Date d3(-1, 2, 5); //不合法的初始化
	//Date d3(2023, 13, 5);
	//Date d3(2023, 2, 29);
	Date d3(2023, 4, 31);
	d3.PrintDate();
}

//测试赋值重载
void test_2() {
	Date d1(2023, 2, 5);
	Date d2;
	d1.PrintDate();
	d2.PrintDate();

	//d2 = d1; //赋值
	//d1.PrintDate();
	//d2.PrintDate();

	Date d3;
	d3 = d2 = d1; //连续赋值
	d1.PrintDate();
	d2.PrintDate();
	d3.PrintDate();
}

//测试==和!=运算符重载
void test_3() {
	Date d1(2023, 2, 5);
	Date d2(2023, 2, 5);
	if (d1 == d2) {
		cout << "d1 == d2" << endl;
	}
	cout << (d1 == d2) << endl;

	Date d3(2023, 2, 5);
	Date d4(2023, 2, 6);
	if (d3 != d4) {
		cout << "d3 != d4" << endl;
	}
	cout << (d3 != d4) << endl;
}

//测试>、>=、<、<=运算符重载
void test_4() {
	//Date d1(2023, 2, 5); //年份大
	//Date d2(2022, 2, 5);
	//Date d1(2023, 2, 5); //年份相等，月份大
	//Date d2(2023, 1, 5);
	//Date d1(2023, 2, 5); //年份相等，月份相等，天份大
	//Date d2(2023, 2, 4);
	//if (d1 > d2) {
	//	cout << "d1 > d2" << endl;
	//}

	//Date d1(2023, 1, 5);
	//Date d2(2023, 2, 5);
	//if (d1 >= d2) {
	//	cout << "d1 >= d2" << endl;
	//}

	//Date d1(2023, 2, 4);
	//Date d2(2023, 2, 5);
	//if (d1 < d2) {
	//	cout << "d1 < d2" << endl;
	//}

	Date d1(2023, 2, 5);
	Date d2(2023, 2, 5);
	if (d1 <= d2) {
		cout << "d1 <= d2" << endl;
	}
}

// 测试+=和+运算符重载
void test_5() {
	//Date d1(2023, 2, 5);
	//d1.PrintDate();
	//Date d2(2023, 2, 7);
	//d2.PrintDate();
	//cout << "=====================" << endl;
	//cout << "5000天后：" << endl;
	//d2 = d1 += 5000;
	//d1.PrintDate();
	//d2.PrintDate();

	Date d1(2023, 2, 8);
	d1.PrintDate();
	d1 += -100;
	d1.PrintDate();
}

//测试前置++和后置++
void test_6() {
	Date d1(2023, 2, 5);
	Date d2;
	d2 = d1++;
	d2.PrintDate();
	d1.PrintDate();

	Date d3;
	d3 = ++d1;
	d3.PrintDate();
	d1.PrintDate();
}

//测试-=和-和--
void test_7() {
	//Date d1(2023, 2, 8);
	//d1.PrintDate();
	//Date d2;
	//d2.PrintDate();
	//d2 = d1 -= 100;
	//d1.PrintDate();
	//d2.PrintDate();

	Date d1(2023, 2, 1);
	Date d2, d3;
	d2 = --d1;
	d1.PrintDate();
	d2.PrintDate();

	d3 = d1--;
	d3.PrintDate();
	d1.PrintDate();
}

//测试-
void test_8() {
	Date d1(2023, 2, 8);
	Date d2(2023, 8, 15);
	int a = d1 - d2;
	cout << a << endl;
}

//测试cout << d
void test_9() {
	Date d1(2023, 2, 8);
	cout << d1;
}

//test cin >> d
void test_10() {
	Date d1(2023, 2, 8);
	cin >> d1;
	cout << d1;
}

int main() {
	test_9();
	return 0;
}
